package com.htjx.mall.controllers;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.htjx.mall.commons.utils.Dates;

@Controller
@RequestMapping("/admin/image")
public class ImageController {
	
	@RequestMapping("/list")
	public String imageList(Model model) {
		return "image/list";
	}
	
	@RequestMapping(value="/upload", method=RequestMethod.GET)  
    public String upload(){  
         return "image/upload";  
    }  
	
	@RequestMapping(value="/upload", method=RequestMethod.POST)  
    public String upload(@RequestParam("imgFile") MultipartFile imgFile, HttpServletRequest request, Model model){  
		System.out.println("文件长度: " + imgFile.getSize());  
        System.out.println("文件类型: " + imgFile.getContentType());  
        System.out.println("文件名称: " + imgFile.getName());  
        System.out.println("文件原名: " + imgFile.getOriginalFilename());  
        System.out.println("========================================");  
        //如果用的是Tomcat服务器，则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中  
        String realPath = request.getSession().getServletContext().getRealPath("/images"); 
        String originalFileName = imgFile.getOriginalFilename();
		String fileType = originalFileName.substring(originalFileName.lastIndexOf("."));
        //这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉，我是看它的源码才知道的
		
		String fileName = Dates.toTimeString(new Date()) + fileType;
        try {
			FileUtils.copyInputStreamToFile(imgFile.getInputStream(), new File(realPath, fileName));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
        model.addAttribute("image", "/images/"+fileName);
        return "image/list";  
    }  
	
//	@RequestMapping(value="/upload", method=RequestMethod.POST)  
//	@ResponseBody
//    public Result upload(@RequestParam("img_file") MultipartFile imgFile, HttpServletRequest request){  
//		System.out.println("文件长度: " + imgFile.getSize());  
//        System.out.println("文件类型: " + imgFile.getContentType());  
//        System.out.println("文件名称: " + imgFile.getName());  
//        System.out.println("文件原名: " + imgFile.getOriginalFilename());  
//        System.out.println("========================================");  
//        //如果用的是Tomcat服务器，则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中  
//        String realPath = request.getSession().getServletContext().getRealPath("/images"); 
//        String originalFileName = imgFile.getOriginalFilename();
//		String fileType = originalFileName.substring(originalFileName.lastIndexOf("."));
//        //这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉，我是看它的源码才知道的
//		
//		String fileName = Dates.toTimeString(new Date()) + fileType;
//        try {
//			FileUtils.copyInputStreamToFile(imgFile.getInputStream(), new File(realPath, fileName));
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} 
//        Result result = new Result(0, "上传成功");
//        result.setBody("/images/"+fileName);
//        return result;  
//    }  
	
	/****
	 * 上传一个图片
	 */
//	@RequestMapping(value = "/upload", method = RequestMethod.POST)
//	public String upload(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {
//		System.out.println("开始");  
//        String path = request.getSession().getServletContext().getRealPath("upload");  
//        String fileName = file.getOriginalFilename();  
////        String fileName = new Date().getTime()+".jpg";  
//        System.out.println(path);  
//        
//		//转型为MultipartHttpRequest(重点的所在)  
//        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
//        //  获得第1张图片（根据前台的name名称得到上传的文件）   
//        MultipartFile imgFile1  =  multipartRequest.getFile("imgFile");  
//        //定义一个数组，用于保存可上传的文件类型  
//        List fileTypes = new ArrayList();  
//        fileTypes.add("jpg");  
//        fileTypes.add("jpeg");  
//        fileTypes.add("bmp");  
//        fileTypes.add("gif"); 
//        
//        //保存第一张图片  
//        if(!(imgFile1.getOriginalFilename() == null || "".equals(imgFile1.getOriginalFilename()))) {  
//		/*下面调用的方法，主要是用来检测上传的文件是否属于允许上传的类型范围内，及根据传入的路径名 
//		*自动创建文件夹和文件名，返回的File文件我们可以用来做其它的使用，如得到保存后的文件名路径等 
//		*这里我就先不做多的介绍。 
//		*/  
//            //File file1 = this.getFile(imgFile1, fileTypes,path1,path2);  
//             
//        }  
//        
//		return "image/list";
//	}
}
